﻿Public Class frmAttentesMAJ
    Public pTYPE As String
    Public pCD_CLI As Integer

    Private szSQL As String
    Private rs As ADODB.Recordset

    Private Sub frmAttentesMAJ_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        TE_CD_CLI.Focus()
    End Sub

    Private Sub frmAttentesMAJ_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If pCD_CLI = 0 Then
            ' creation 
            ClearTextBoxes(Me)
            TE_TYPE.Text = pTYPE
        Else
            ' modification, Lire l'enreg sélectionné
            szSQL = "CALL spGet_ATTENTES_byCD_CLI(" & pCD_CLI & ")"
            GetRecordset(ctDSN_AEM, szSQL, rs)
            If rs.RecordCount > 0 Then
                TE_DATE.Text = rs.Fields("cree_le").Value
                TE_CD_CLI.Text = Format(rs.Fields("cd_cli").Value, "000000")
                TE_NOM.Text = rs.Fields("nom").Value
                TE_PRIORITE.Text = rs.Fields("ordre").Value
                chkAVIS.Checked = rs.Fields("avis").Value
                TE_TYPE.Text = rs.Fields("cat").Value
                TE_MODIFIE_LE.Text = setModifiedBy(rs.Fields("cree_le").Value, rs.Fields("modif_le").Value, rs.Fields("cd_uti").Value)
            End If
            rs.Close()
        End If

    End Sub

    Private Function IsInputOK() As Boolean

        IsInputOK = False

        ' Lire la fiche Elève
        szSQL = "CALL spGet_ELEVES_byCD_CLI(" & TE_CD_CLI.Text & ")"
        GetRecordset(ctDSN_AEM, szSQL, rs)
        If rs.RecordCount < 1 Then
            MsgBox("Elève " & TE_CD_CLI.Text & " non trouvé !", MsgBoxStyle.Critical)
            rs.Close()
            Exit Function
        End If

        TE_NOM.Text = rs.Fields("nompren").Value

        ' le Code est bon et attente dans la liste théorique
        If IsDate(rs.Fields("tr_t_ok").Value) And TE_TYPE.Text = "ETG" Then
            MsgBox("Cet élève a déjà réussi l'examen THEORIQUE.", MsgBoxStyle.Critical)
            rs.Close()
            Exit Function
        End If

        ' le Permis est bon et attente dans la liste permis B
        If IsDate(rs.Fields("tr_p_ok").Value) And rs.Fields("permis_demande").Value = "B" And TE_TYPE.Text = "B" Then
            MsgBox("Cet élève a déjà réussi l'examen PRATIQUE du Permis B.", MsgBoxStyle.Critical)
            rs.Close()
            Exit Function
        End If
        ' permis ne correspond pas à la liste B
        If rs.Fields("permis_demande").Value <> "B" And TE_TYPE.Text = "B" Then
            MsgBox("La Catégorie de Permis demandée n'est pas compatible avec la liste d'attente B.")
        End If

        ' permis ne correspond pas à la liste 2R
        If rs.Fields("permis_demande").Value.ToString.Substring(0, 1) = "A" And TE_TYPE.Text = "2R" Then
            MsgBox("La Catégorie de Permis demandée n'est pas compatible avec la liste d'attente A.")
        End If
        rs.Close()

        ' vérifer si l'élève est déjà inscrit à un examen ?
        szSQL = "CALL spGet_EXAMENS_AFF_byCD_CLI(" & TE_CD_CLI.Text & ")"
        GetRecordset(ctDSN_AEM, szSQL, rs)
        Do While Not rs.EOF
            If rs.Fields("resultat").Value = 0 Then
                MsgBox("Cet élève est déjà inscrit à un examen.", MsgBoxStyle.Critical)
            End If
            rs.MoveNext()
        Loop
        rs.Close()

        IsInputOK = True

    End Function

    Private Sub BO_RECHERCHER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_RECHERCHER.Click
        ' recherche elève ?
        If TE_CD_CLI.TextLength > 0 Then
            gCD_CLI = TE_CD_CLI.Text
        End If
        frmElevesSearch.pType = "ELEVE"
        frmElevesSearch.ShowDialog()
        TE_CD_CLI.Text = gCD_CLI
        TE_NOM.Text = frmElevesSearch.Nompren
        ' passe au champs suivant
        TE_PRIORITE.Focus()

    End Sub

    Private Sub BO_ELEVE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_ELEVE.Click
        ' affiche la fiche de l'éleve
        If TE_CD_CLI.TextLength Then
            gCD_CLI = TE_CD_CLI.Text
            frmElevesMAJ.ShowDialog()
        End If
    End Sub

    Private Sub BO_ENREGISTRER_Click(sender As System.Object, e As System.EventArgs) Handles BO_ENREGISTRER.Click

        If IsInputOK() = True Then
            ' creation ?
            If pCD_CLI = 0 Then
                ' Ajouter un élève en attente
                szSQL = "CALL spINS_ATTENTES('" & pTYPE & "'," & TE_CD_CLI.Text & ")"
                If ExecQuery(ctDSN_AEM, szSQL) = False Then
                    Exit Sub
                End If
                pCD_CLI = TE_CD_CLI.Text
            End If
            ' mise à jour 
            szSQL = "CALL spUpd_ATTENTES(" & pCD_CLI & "," & TE_CD_CLI.Text & ",'" & _
                nq(TE_NOM.Text) & "'," & TE_PRIORITE.Value & "," & CInt(chkAVIS.Checked) & ",'" & gUserCode & "')"
            If ExecQuery(ctDSN_AEM, szSQL) Then
                Me.Close()
            End If
        Else
            TE_CD_CLI.Focus()
        End If

    End Sub

    Private Sub BO_SUPPRIMER_Click(sender As System.Object, e As System.EventArgs) Handles BO_SUPPRIMER.Click
        ' suppression
        deleteEnregistrement("ATTENTES", TE_NOM.Text, pCD_CLI)
        ' ferme la fenetre
        Me.Close()
    End Sub
End Class